package com.teira.rhrrealstate.entity;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

@Entity
public class Inmueble implements Serializable
{
	
	@Id 
	@SequenceGenerator(name="my_seq", sequenceName="INMUEBLE_SEQ")
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="my_seq")
	private Long id;
	@NotNull @OneToOne
	private TipoOperacion tipoOperacion;
	@NotNull @OneToOne
	private Propiedad propiedad;
	@NotNull @OneToOne
	private ZonaGeografica zonaGeografica;
	@OneToOne
	private BarrioPartidoLocalidad barrioPartidoLocalidad;
	@NotNull
	private Double precio;
	@NotNull @OneToOne
	private Moneda mondeda;
	@NotNull @OneToOne
	private Ambientes ambientes;
	@NotNull @Length(max=120)
	private String direccion;
	@NotNull @Length(max=250)
	private String descripcion;
	@NotNull @OneToOne
	private Antiguedad antiguedad;
/*	 @ManyToMany(targetEntity = Imagen.class)
	  @JoinTable(name = "ImagenesInmueble", 
	    joinColumns = @JoinColumn(name = "inmuebleId"),
	    inverseJoinColumns = @JoinColumn(name = "imagenId"))
*/
	@OneToMany
	private Set<Imagen> imagenes;
	@NotNull @OneToOne
	private Cliente cliente;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	
	public TipoOperacion getTipoOperacion() {
		return tipoOperacion;
	}
	public void setTipoOperacion(TipoOperacion tipoOperacion) {
		this.tipoOperacion = tipoOperacion;
	}
	public Propiedad getPropiedad() {
		return propiedad;
	}
	public void setPropiedad(Propiedad propiedad) {
		this.propiedad = propiedad;
	}
	public ZonaGeografica getZonaGeografica() {
		return zonaGeografica;
	}
	public void setZonaGeografica(ZonaGeografica zonaGeografica) {
		this.zonaGeografica = zonaGeografica;
	}
	public BarrioPartidoLocalidad getBarrioPartidoLocalidad() {
		return barrioPartidoLocalidad;
	}
	public void setBarrioPartidoLocalidad(
			BarrioPartidoLocalidad barrioPartidoLocalidad) {
		this.barrioPartidoLocalidad = barrioPartidoLocalidad;
	}
	public Double getPrecio() {
		return precio;
	}
	public void setPrecio(Double precio) {
		this.precio = precio;
	}
	public Moneda getMondeda() {
		return mondeda;
	}
	public void setMondeda(Moneda mondeda) {
		this.mondeda = mondeda;
	}
	public Ambientes getAmbientes() {
		return ambientes;
	}
	public void setAmbientes(Ambientes ambientes) {
		this.ambientes = ambientes;
	}
	public Antiguedad getAntiguedad() {
		return antiguedad;
	}
	public void setAntiguedad(Antiguedad antiguedad) {
		this.antiguedad = antiguedad;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public String getDescripcion() {
		return descripcion;
	}
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	public Set<Imagen> getImagenes() {
		return imagenes;
	}
	public void setImagenes(Set<Imagen> imagenes) {
		this.imagenes = imagenes;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	   
}
